package os.t1;

public class Resources {
    public int[] res=new int[2];//缓冲区，临界资源2个
    public int count=0;//数组的下标

    /**
     * 生产数据
     */
    synchronized public void product() throws Exception{
        if(count==res.length){
            System.out.println("缓冲区满了,生产者线程进入等待...");
            wait();
        }else{
            //生产了一个数据，消耗了一个缓冲区
            int m= (int) Math.floor(Math.random()*100+1);
            res[count]=m;
            count++;
            System.out.println("生产了："+m+"此时消耗的缓冲区是"+count);
            //唤醒消费者
            notify();
        }
    }

    /**
     * 消费数据
     */
    synchronized public void consume() throws Exception{
        if(count==0){
            System.out.println("缓冲区空了,消费者线程进入等待...");
            wait();
        }else{
            int n=res[count-1];
            res[count-1]=0;
            count--;
            System.out.println("消费了："+n+"此时消耗的缓冲区是"+(count));
            //唤醒生产者
            notify();
        }
    }
}
